package cc.yugu.yhdw.webserver.persistence.hdw;

import cc.yugu.yhdw.common.domain.hdw.Battery;
import cc.yugu.yhdw.common.persistence.MasterMapper;
import org.apache.ibatis.annotations.Param;

import java.util.Date;
import java.util.List;
import java.util.Map;

/**
 * 电池信息
 *
 * @Date:Created in 2018/6/29 19:24
 * @Author:
 * @Modified By: zjn 2018/6/29 19:24
 */
public interface BatteryMapper extends MasterMapper {
    /**
    * 根据两个表hdw_battery 和 hdw_battery_pack 中的不同 组合字段 查询，返回对应的行数
    *
    * @Param: [battery]
    * @Return: int
    * @Author By: zjn 2018/6/29  9:37
    */
    public int findPageCount(Battery battery);
    /**
    * 根据两个表hdw_battery 和 hdw_battery_pack 中的不同 组合字段 查询，返回对应的行数（new）（权限）
    * @Param [battery]
    * @Return int
    * @Author zxj 2018/7/26
    */
    public int findPageCounts(Battery battery);
    /**
    * 分页查询，根据表hdw_battery和hdw_battery_pack 中的不同组合字段查询，并将返回结果按照创建时间降序排列
    *
    * @Param: [battery]
    * @Return: java.util.List<cc.yugu.yhdw.common.domain.hdw.Battery>
    * @Author By: zjn 2018/6/29  19:26
    */
    public List<Battery> findPageResult(Battery battery);
    /**
     * 分页查询，根据表hdw_battery和hdw_battery_pack 中的不同组合字段查询，并将返回结果按照创建时间降序排列
     * new (权限）（代理商运营商）
     * @Param [battery]
     * @Return java.util.List<cc.yugu.yhdw.common.domain.hdw.Battery>
     * @Author zxj 2018/7/26
     */
    public List<Battery> findPageResults(Battery battery);
    /**
     * 查询异常电池数量
     * @Param [battery]
     * @Return java.util.List<cc.yugu.yhdw.common.domain.hdw.Battery>
     * @Author zxj 2018/8/20
     */
    public int findPageCountByAbnormal(Battery battery);
    /**
     * 查询异常电池信息
     * @Param [battery]
     * @Return java.util.List<cc.yugu.yhdw.common.domain.hdw.Battery>
     * @Author zxj 2018/8/20
     */
    public List<Battery> findPageResultByAbnormal(Battery battery);
    /**
    * 插入数据
    *
    * @Param: [battery]
    * @Return: int
    * @Author By: zjn 2018/6/29  19:26
    */
    public int insert(Battery battery);
    /**
    * 当经度和纬度都不为 0 时，从表hdw_battery中查询出 全部经纬度
    *
    * @Param: []
    * @Return: java.util.List<java.util.Map<java.lang.String,java.lang.Double>>
    * @Author By: zjn 2018/6/29  19:26
    */
    public List<Map<String, Double>> findAll();
    /**
     * 电池分布图查询电池信息展示
     * @Param []
     * @Return java.util.List<java.util.Map<java.lang.String,java.lang.Double>>
     * @Author zxj 2018/8/21
     */
    public List<Map<String, Double>> findAllToMap();
    /**
    * 根据主键id更新表hdw_battery
    *
    * @Param: [battery]
    * @Return: int
    * @Author By: zjn 2018/6/29  19:26
    */
    public int update(Battery battery);
    /**
    * 按条件从 换点订单表hdw_exchange_order中查询，并将结果按照主键id降序排列
    *
    * @Param: [date, id]
    * @Return: java.util.List<java.lang.String>
    * @Author By: zjn 2018/6/29  19:26
    */
    public List<String> findUsageLog(@Param("date") Date date, @Param("id") String id);
    /**
    * 根据旧电id或者新电id查询表 hdw_exchange_order，并按创建时间分组
    *
    * @Param: [id]
    * @Return: java.util.List<java.lang.String>
    * @Author By: zjn 2018/6/29  19:26
    */
    public List<String> findUsageLogCount(@Param("id") String id);
    /**
    * 根据主键id 删除表hdw_battery中对应数据
    *
    * @Param: [id]
    * @Return: int
    * @Author By: zjn 2018/6/29  19:26
    */
    public int delete(String id);
    /**
    * 根据条件查询表hdw_battery，并返回行数
    *
    * @Param: []
    * @Return: int
    * @Author By: zjn 2018/6/29  19:26
    */
    public int findFault();
    /**
     * 查询故障电池（new，运营商和代理商可看）
     * @Param [agentId, agencyId]
     * @Return int
     * @Author zxj 2018/8/3
     */
    public int findFaults(@Param("agentId") Integer agentId, @Param("agencyId") Integer agencyId);
    /**
     * 查询异常电池（new 权限）
     * @Param [agentId, agencyId]
     * @Return int
     * @Author zxj 2018/8/21
     */
    public int findAbnormal(@Param("agentId") Integer agentId, @Param("agencyId") Integer agencyId);
    /**
    * 根据电池组id从表hdw_battery中删除
    *
    * @Param: [id]
    * @Return: int
    * @Author By: zjn 2018/6/29  19:26
    */
    public int deleteByPackId(String id);
    /**
    * 根据主键id更新表hdw_battery
    *
    * @Param: [id, status, orderId, customerId]
    * @Return: int
    * @Author By: zjn 2018/6/29  19:26
    */
    public int updateOrderId(@Param("id") String id, @Param("status") int status, @Param("orderId") String orderId, @Param("customerId") int customerId);
    /**
    * 根据主键id将表hdw_battery中 客户id更新为null
    *
    * @Param: [id]
    * @Return: int
    * @Author By: zjn 2018/6/29  19:26
    */
    public int cleanCustomerId(@Param("id") String id);
    /**
    * 根据主键查询表hdw_battery
    *
    * @Param: [id]
    * @Return: cc.yugu.yhdw.common.domain.hdw.Battery
    * @Author By: zjn 2018/6/29  19:27
    */
    public Battery find(String id);
    /**
    * 根据客户id查询表hdw_battery中一条数据
    *
    * @Param: [customerId]
    * @Return: cc.yugu.yhdw.common.domain.hdw.Battery
    * @Author By: zjn 2018/6/29  19:27
    */
    public Battery findByCustomer(Integer customerId);
    /**
    * 根据主键查询表hdw_battery ，并返回行数
    *
    * @Param: [battery]
    * @Return: int
    * @Author By: zjn 2018/6/29  19:27
    */
    public int checkRepeat(Battery battery);
}
